package com.ruoyi.material.service;

import com.ruoyi.material.domain.BaseFlieRecord;
import com.ruoyi.material.domain.vo.FileRecordVo;
import com.ruoyi.material.domain.vo.FileTotalInfoVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文件记录Service接口
 * 
 * @author ruoyi
 * @date 2021-07-10
 */
public interface IBaseFlieRecordService 
{
    /**
     * 查询文件记录
     * 
     * @param id 文件记录ID
     * @return 文件记录
     */
    public BaseFlieRecord selectBaseFlieRecordById(Long id);

    /**
     * 查询文件记录列表
     * 
     * @param baseFlieRecord 文件记录
     * @return 文件记录集合
     */
    public List<BaseFlieRecord> selectBaseFlieRecordList(BaseFlieRecord baseFlieRecord);

    /**
     * 新增文件记录
     * 
     * @param baseFlieRecord 文件记录
     * @return 结果
     */
    public int insertBaseFlieRecord(BaseFlieRecord baseFlieRecord);

    /**
     * 修改文件记录
     * 
     * @param baseFlieRecord 文件记录
     * @return 结果
     */
    public int updateBaseFlieRecord(BaseFlieRecord baseFlieRecord);

    /**
     * 批量删除文件记录
     * 
     * @param ids 需要删除的文件记录ID
     * @return 结果
     */
    public int deleteBaseFlieRecordByIds(Long[] ids);

    /**
     * 删除文件记录信息
     * 
     * @param id 文件记录ID
     * @return 结果
     */
    public int deleteBaseFlieRecordById(Long id);

    /**
     * 批量添加
     * @param list
     * @return
     */
    public int addBaseFlieRecordList(List<BaseFlieRecord> list);
    /**
     * 更具目录树的结构查询文件
     * 默认目录从 -1 开始查询文件
     */
    public List<BaseFlieRecord> selectBaseFlieRecordByPcode(BaseFlieRecord baseFlieRecord,String pcode);
    /**
     * 更具目录树的结构查询文件
     * 默认目录从 -1 开始查询文件
     */
    List<FileRecordVo> selectBaseFlieRecordvOByPCodeAndBaseFileRecord(BaseFlieRecord baseFlieRecord , String pcode);

    /**
     * 汇总信息
     * @return
     */
    public FileTotalInfoVo selectTotalInfo();

    /**
     * 查询文件记录，根据path_file_name
     *
     * @param path_file_name
     * @return 文件记录
     */
    public BaseFlieRecord selectBaseFlieRecordByPathFileName(String path_file_name);
//    /**
//     * 假删除文件记录
//     *
//     * @param ids 文件记录ID
//     * @return 结果
//     */
//    public int delBaseFlieRecordlList(List<Integer> ids);
    /**
     * 根据已经找的的id、filecode的map进行批量删除
     *
     * @param list 上一级的code,本级的p_code
     * @param updateBy
     * @return 结果
     */
    public int delBaseFlieRecordList(@Param("list") List<Integer> list, @Param("updateBy") String updateBy);
}
